package com.bingquan.company.proxy.dynamic;

import java.lang.reflect.InvocationHandler;
import java.lang.reflect.Proxy;

public class Client {

    /**
     * 动态代理， 使用反射的方式, 个人理解动态是传入 Hello 类对象入参， 则   jdk  Proxy 会调用Hello对象方法
     * <p>
     * Proxy.newProxyInstance 方法底层，使用反射方式，创建了代理对象 .class文件
     * https://www.jianshu.com/p/471c80a7e831
     *
     * @param args
     */
    public static void main(String[] args) {
        Hello hello = new Hello();
        InvocationHandler handler = new HelloProxy(hello);
        HelloInterface helloInterface = (HelloInterface) Proxy.newProxyInstance(handler.getClass().getClassLoader(), hello.getClass().getInterfaces(), handler);
        helloInterface.sayHello();
    }
}
